/**
 * 异步请求对象（简化版
 * @param data     请求数据
 * @param dealType 响应数据处理对象
 * @param dom      事件源
 */
var sendData = function(data, dealType, dom) {
    // XHR对象 简化版本，IE另行处理
    var xhr = new XMLHttpRequest(),
        url = 'getData.php?mod=userinfo';
    // 请求返回事件
    xhr.onload = function(event) {
        // 请求成功
        if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {
            dealData(xhr.responseText, dealType, dom);
        } else {
            // 请求失败
        }
    };
    // 拼接请求字符串
    for (var key in data) {
        url += `&${key}=${data[key]}`;
    }
    // 发送异步请求
    xhr.open('get', url, true);
    xhr.send(null);
}

/**
 * 处理响应数据
 * @param data     响应数据
 * @param dealType 响应数据处理对象
 * @param dom      事件源
 */
var dealData = function(data, dealType, dom) {
    // 对象toString方法简化引用
    var dataType = Object.prototype.toString.call(data);
    // 判断响应数据处理对象
    switch(dealType) {
        case 'sug':
            // 如果数据位数组
            if (dataType === '[object Array]') {
                // 创建提示框组件
                return createSug(data, dom);
            }
            // 将响应的对象数据转化为数组
            if (dataType === '[object Object]') {
                var newData = [];
                for (var key in data) {
                    newData.push(data[key]);
                }
                return createSug(newData, dom);
            }
            // 将响应的其它数据转化为数组
            return createSug([data], dom);
            break;
        case 'validate':
            return createValidataResult(data, dom);
            break;
    }
}

/**
 * 创建提示框组件
 * @param data 响应适配数据
 * @param dom  事件源
 */
var createSug = function(data, dom) {
    // var i = 0,
    //     len = data.length,
    //     html = '';
    // // 拼接每一句提示语句 
    // for (; i < len; i++) {
    //     html += `<li>${data[i]}</li>`;
    // }
    // // 显示提示框
    // dom.parentNode.getElementsByTagName('ul')[0].innerHTML = html;
    // 模拟
    console.log(data, dom, 'createSug');
}

/**
 * 创建校验组件
 * @param data 相应适配数据
 * @param dom  事件源
 */
var createValidataResult = function(data, dom) {
    // 显示校验结果
    // dom.parentNode.getElementsByTagName('span')[0].innerHTML = data;
    // 模拟
    console.log(data, dom, 'createValidataResult');
}


// 测试
dealData(123, 'sug', '');
dealData(['爱奇艺', '阿里巴巴', '爱漫画'], 'sug', '');
dealData({
    iqy: '爱奇艺', 
    alibb: '阿里巴巴', 
    imh: '爱漫画'
}, 'sug', '');
